﻿//////////////////////////////////////////////////////////////////////////////
//
//  Copyright © 1998-2024 Glodon Company Limited.  All rights reserved.
//
//  Use of this software is subject to the terms of the Glodon license
//  agreement provided at the time of installation or download, or which
//  otherwise accompanies this software in either electronic or hard copy form.  
//
//////////////////////////////////////////////////////////////////////////////

#pragma once

#include "GcmpModel.h"
#include <string>
#include <vector>

namespace gcmp
{
    class IDocument;
    class ITransactionError;

    /// \brief 事务发生错误时的自定义处理接口
    ///
    ///  自定义实现错误处理器后， 通过UserTransactionUtil::SetErrorProcessor来设置
    ///  在事务Commit之前， 将会检查当前是否存在错误， 并将所有的错误交由该处理器处理
    ///  如果错误类型时Error， 在完成了自定义操作后，平台会强制中断并回滚当前事务。
    class GCMP_MODEL_EXPORT ITransactionErrorProcessor
    {
    public:
        /// \brief 自定义处理操作主入口
        /// 
        /// \param transactionErrors 错误信息集合
        /// \return  true 成功处理 false 未成功处理
        virtual bool Process(const std::vector<const ITransactionError*>& transactionErrors) = 0;

        /// \brief 析构函数
        virtual ~ITransactionErrorProcessor(){}
    };
}

